/*
 * funcionR14-R16.cpp
 *
 *  Created on: Dec 1, 2013
 *      Author: m
 */

#include "funcionR14-R16.h"

using ipc::CPrinter;

Producto retirarProductoCinta15()
{
    /*
    ControladorR16Consumidor  controlador;

    ICinta15 *cinta15;
    IRobot14 *robot14;
    IRobot16 *robot16;

    cinta15 = &controlador;
    robot14 = &controlador;
    robot16 = &controlador;

    bool tieneElems;

    int sleepTime;

    ElementoProduccion elemento;

    srand( getpid() );

    CPrinter::setHeader("R16");

    CPrinter::printOut( "Verifico si la cinta15 tiene elementos" );
    tieneElems = cinta15->tieneElementos();

    if ( !tieneElems )
    {
        CPrinter::printOut( "Esperando Elementos en la cinta 15" );

        robot16->esperarNuevoElemento();
    }

    /*
     * Si el elemento no está en el extremo de este robot, avanzo la cinta
     *  para poder retirarlo, asimismo al avanzar la cinta notifico que
     *  hay espacio vacio al inicio para que el productor se despierte si
     *  es que estaba esperando lugar.
     */
    /*
    while ( cinta15->avanzar() )
    {
        sleepTime = SLEEP_AVANZAR_CINTA;
        CPrinter::printOut( "Avanzando la cinta 15 durante: %ds",
                sleepTime );
        sleep( sleepTime );

        if ( robot14->esperaEspacioVacio() )
        {
            CPrinter::printOut( "Despertando al Robot 14");

            robot14->notificarEspacioVacio();
        }
    }

    /*
     * Finalmente quito el elemento de la cinta, si la primer posicion esta
     *  ocupada avanzo la cinta una vez y finalmente notifico al productor
     *  que hay un nuevo espacio libre en la cinta
     */
    /*
    elemento = cinta15->quitar();

    sleepTime = SLEEP_QUITAR_ELEMENTO;
    CPrinter::printOut( "Quitando elemento de cinta 15 durante: %ds",
            sleepTime );
    sleep( sleepTime );

    CPrinter::printOut( "Obtenido el elemento: %d de la cinta 15",
            elemento.productoId );

    if ( robot14->esperaEspacioVacio() )
    {
        cinta15->avanzar();


        sleepTime = SLEEP_AVANZAR_CINTA;
        CPrinter::printOut( "Avanzando la cinta 15 durante: %ds",
                sleepTime );
        sleep( sleepTime );

        CPrinter::printOut( "Despertando al Robot 14");

    }

    robot14->notificarQuiteElemento();

    return elemento;
    */
}
